package com.party.core.service.dbAnalyze.impl;

import com.google.common.collect.Maps;
import com.party.common.paging.Page;
import com.party.core.dao.read.dbAnalyze.DbAnalyzeReadDao;
import com.party.core.model.dbAnalyze.DbAnalyze;
import com.party.core.model.dbAnalyze.DbFile;
import com.party.core.service.dbAnalyze.IDbAnalyzeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;

/**
 * Created by wei.li
 *
 * @date 2017/8/3 0003
 * @time 10:39
 */

@Service
public class DbAnalyzeService implements IDbAnalyzeService {

    @Autowired
    private DbAnalyzeReadDao dbAnalyzeReadDao;

    /**
     * 数据库表列表
     * @param dbAnalyze 表分析
     * @param page 分页参数
     * @return 表列表
     */
    @Override
    public List<DbAnalyze> tables(DbAnalyze dbAnalyze, Page page) {
        return dbAnalyzeReadDao.tables(dbAnalyze, page);
    }

    /**
     * 获取文件名
     * @param table 表名
     * @return 文件名
     */
    @Override
    public DbFile getDbFile(String table) {
        return dbAnalyzeReadDao.getDbFile(table);
    }

    /**
     * 文件是否存在
     * @param table 表名
     * @return 是否存在（true/false）
     */
    @Override
    public boolean hasFile(String table) {
        boolean result = false;
        DbFile dbFile = this.getDbFile(table);
        if (null != dbFile){
            result = true;
        }
        return result;
    }

    /**
     * 今天的统计
     * @param table 表名
     * @return 统计数据
     */
    @Override
    public Integer todayCount(String table) {
        return dbAnalyzeReadDao.count(0, table);
    }

    /**
     * 本周统计
     * @param table 表名
     * @return 统计数据
     */
    @Override
    public Integer weekCount(String table) {
        return dbAnalyzeReadDao.count(1, table);
    }

    /**
     * 本月统计
     * @param table 表名
     * @return 统计数据
     */
    @Override
    public Integer monthCount(String table) {
        return dbAnalyzeReadDao.count(2, table);
    }

    /**
     * 统计列表
     * @param parameter 参数
     * @return 列表数据
     */
    @Override
    public List<HashMap<String, Integer>> countList(HashMap<String, Object> parameter) {
        return dbAnalyzeReadDao.countList(parameter);
    }

    /**
     * 统计数据
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param table 参数列表
     * @return 参数数据
     */
    @Override
    public List<HashMap<String, Integer>> countList(String startTime, String endTime, String table) {
        HashMap<String, Object> parameter = Maps.newHashMap();
        parameter.put("table", table);
        parameter.put("startDate", startTime);
        parameter.put("endDate", endTime);
        return this.countList(parameter);
    }
}
